package com.woniuxy.coachservice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.coachdao.model.CoachInfo;
import com.woniuxy.coachmodel.dto.CoachLoginDto;
import com.woniuxy.coachmodel.form.ApiSearchCoachForm;
import com.woniuxy.coachmodel.form.UpdateCoachStateForm;
import com.woniuxy.coachmodel.param.*;
import com.woniuxy.core.util.PageInfo;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 教练 服务类
 * </p>
 *
 * @author 冉杰
 * @since 2024-01-15
 */
public interface CoachInfoService extends IService<CoachInfo> {

    void sendRegisterCode(String phone);

    void register(CoachRegisterParam param);

    CoachLoginDto loginByAccountPass(CoachLoginByAccountPassParam param);

    void sendLoginPhoneCode(String phone);

    CoachLoginDto loginByPhoneCode(CoachLoginByPhoneCodeParam param);

    void uploadCoachAvatar(String url, Integer coachId);

    void updateCoachAvatar(UpdateCoachAvatarParam param) throws IOException;

    void uploadCoachLicense(String url, Integer coachId);

    void refine(RefineParam param);

    void checkOldPass(String oldPass, Integer coachId);

    void updatePass(UpdateCoachPassParam param);

    void updateCoachPhone(UpdateCoachPhoneParam param);

    void disableCoach(UpdateCoachStateForm form);

    void enableCoach(UpdateCoachStateForm form);

    void auditCoach(UpdateCoachStateForm form);

    PageInfo<CoachLoginDto> searchCoach(ApiSearchCoachForm form);

    CoachLoginDto searchCoachByCoachId(Integer coachId);

    List<CoachLoginDto> searchAllCoachByCoachIds(List<Integer> coachIds);

    List<CoachLoginDto> venueSearchCoachByCoachIds(List<Integer> coachIds);

    CoachLoginDto venueSearchCoachByCoachId(Integer coachId);

    PageInfo<CoachLoginDto> searchCoachByVenueId(Integer pageSize,Integer pageNum,Integer venueId);

    List<CoachLoginDto> findCoachByVenueId(Integer venueId);

    void refuseCoach(Integer coachId, String message);

    CoachLoginDto viewPersonalInformation(Integer coachId);

    List<CoachLoginDto> venueSearchCoach();

    PageInfo<CoachLoginDto> byPage(Integer pageNum, Integer pageSize, Integer venueId);
}
